<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="utf-8" />
        <title>chapter2</title>
        <link rel="stylesheet" href="/theme/css/main.css" />

        <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
</head>

<body id="index" class="home">
        <header id="banner" class="body">
                <h1><a href="/">PythonTutorials </a></h1>
                <nav><ul>
                    <li class="active"><a href="/category/cpp.html">cpp</a></li>
                    <li><a href="/category/python.html">python</a></li>
                </ul>
                </nav>
        </header><!-- /#banner -->
<section id="content" class="body">
  <article>
    <header>
      <h1 class="entry-title">
        <a href="/c-chapter2.html" rel="bookmark"
           title="Permalink to chapter2">chapter2</a></h1>
    </header>

    <div class="entry-content">
<footer class="post-info">
        <span>Mon 06 April 2020</span>
<span>| tags: <a href="/tag/cpp.html">cpp</a><a href="/tag/progarmming.html">progarmming</a></span>
</footer><!-- /.post-info -->      <p>语言的数值和数据类型
<strong>一、标识符（三大类）</strong></p>
<ol>
<li>关键字（保留字）：32个（int char float double，unsigned，do，if，for等），字母组成，全部小写</li>
<li>预定义标识符（scanf、printf、include，main）库函数，系统所给的函数。</li>
<li>用户自定义标识符（区分大小写，字母或者下划线开头）<ol>
<li>场合：变量名，数组名，自定义函数名称</li>
<li>规则：</li>
</ol>
</li>
</ol>
<p><strong>二、数据类型（分配内存空间）：</strong>
1. 基本类型： int,float,char,double,enum
2. 构造类型：数组型，结构体型struct，共用体类型union，枚举类型enum
3. 指针类型 *
4. 空类型 void</p>
<hr>
<p><strong>三、数据：常量、变量、表达式、函数</strong>
1. 常量： 值不发生变化（整型、实型、字符型、字符串）
    * 整型常量（int） 
        1. 八进制（0开头,013，0777）
        2. 十进制（日常的0-9组成的数字）
        3. 十六进制（0x 或者0X,0XFFF）
        2.  长整型需要在结尾加L小写l，0x999L,34L,0567L
    * 实数型常量（float，double）
        1. 指数形式2e10,2E10;（1）e前面、且后面必须为整数，且为整数（2）e的前后不能有空格。
        2. 小数形式：数字和小数点组成（.456,1.456,123.）
    * 字符型常量（char）
        1. 常规:一对单引号只能放一个字符，'a','b','@',
        2. 转义：以反斜杠"\"开头，\n换行符,\t制表符,\r回车键,\b
        3. 八进制:'\ddd'，比如十进制65(1000001)，则字符型为'\101',最多可以有有三位
        4. 十六进制:'\xhh',比如十进制65(1000001)，则字符型为'\x41'，最多可以有二位十六进制
    * 字符串常量
        1. 用一对双括号括起来的若干个字符（0或者0个以上）
        2. c语言不存在字符串变量
        3. 注意区分字符型常量和字符串常量
        4. 通过借存的方式存储字符串常量，如数组，指针
        5. '\0',字符串结束的标志</p>
<ol>
<li>变量：值会发生变化<ul>
<li>变量使用规则：先定义后使用（变量用来存常量）<ul>
<li>定义：数据类型名 变量名列表 ； </li>
<li>(1)int a;int b;int c;</li>
<li>(2)int a,b,c;</li>
<li>(3)int e=a,b=2,c=3;\/<em>赋初始值</em>/</li>
</ul>
</li>
<li>变量名属于用户标识符</li>
<li>在同一函数体{}中，不能定义同名变量</li>
<li>同时定义多个相同类型变量，必须用逗号分隔</li>
<li>变量可以赋初始值，否则为随机值    </li>
</ul>
</li>
</ol>
<hr>
<ol>
<li>
<p>表达式：用运算符将数据连接起来的合法式子。如果表达式合法，则有唯一确定的返回值</p>
<ul>
<li><strong>运算符的三个特性：功能、优先级、结合性（运算方向）</strong></li>
<li>参与运算的数据类型决定了表达式的运算结果的类型</li>
<li>加减乘除的运算方向是从左向右，优先级相同的情况下，要考虑结合性</li>
<li><strong>（1）算术运算符及算术表达式+、-、*、\/</strong><ol>
<li>优先级：加减的优先级为4，乘除的优先级为3，</li>
<li>功能：加减乘除</li>
<li>结合性：从左向右</li>
<li>求余%： <strong>两边运算的数据类型必须是整型</strong></li>
<li>求余的方法，先忽略符号，求出余数，再将所得余数符号定成与被除数相同的的符号即可，如17%3=2,17%-3=2，-17%3=-2，-17%-3=-2.即与被除数的符号保持一致。</li>
<li>凡是表达式都是确定的数值</li>
<li><strong>单独的常量、变量和函数调用都是C语言的合法表达式</strong></li>
<li><strong>如何计算表达式：挑出运算符，先计算优先级别高的，同级情况下，考虑结合性</strong></li>
</ol>
</li>
<li>
<p>（2）赋值运算符及其赋值表达式</p>
<ol>
<li>格式：变量名 = 表达式</li>
<li>将表达式的数值 “= ”给左边的变量</li>
<li>优先级：14级</li>
<li>结合性：从右向左，比如a=12+12</li>
<li>==注意：==<strong>a=b=c=1+2,先计算1+2等到3，然后将3赋值给c，然后将c=1+2的表达式的数值赋值给b，然后将b=c=1+2表达式的赋值给了a。</strong></li>
<li>赋值运算符左边只能是变量，</li>
<li>赋值运算右边可以是合法表达式，</li>
<li>实型数据赋值给整型数据时，实型小数部分被舍去；整型数据赋值给实型变量，整型自动转换为实型</li>
<li>变量在赋值号左边，则会刷新或者重新赋值变量的值。</li>
</ol>
</li>
<li>
<p><strong>（3）复合赋值运算符（10个）：</strong></p>
</li>
<li>优先级：14级</li>
<li>==<strong>结合性：从右向左</strong>==</li>
<li>技巧：变量保留，将左边整体移到右边，右边的表达式用括号括起来（或者先将右边的表达式算出值），以提高优先级，然后将运算结果赋值给左边。<ol>
<li>+=</li>
<li>-=</li>
<li>*=</li>
<li>/=</li>
<li>%=</li>
<li>&amp;=</li>
<li>|=</li>
<li>^=</li>
<li>>&gt;= </li>
<li>&lt;&lt;=</li>
</ol>
</li>
<li>
<p><strong>复合赋值运算符的中间不能有空格</strong></p>
</li>
<li>
<p><strong>(4)自增、自减运算符及其表达式</strong>：</p>
</li>
<li>优先级：2级</li>
<li>结合性：从右向左</li>
<li>++： i++  ++i,等价于i=i+1<ul>
<li>--:   i--  --i,等价于i=i-1</li>
<li><strong>自增、自减运算符只能用于变量，不能用于常量和表达式</strong></li>
<li>==技巧：++在前，先加（变量的值先+1）后标（标表达式的值），++在后，先标（标表达式的值）后加（变量值+1），--同理==。</li>
</ul>
</li>
<li>举例</li>
<li>int a=3；求如下表达式和变量值：</li>
<li>a）a++，表达式值，变量值——3,4</li>
<li>b）++a，表达式值，变量值——4,4</li>
<li>c）a--，表达式值，变量值——3,2</li>
<li>d）--a，表达式值，变量值——2,2</li>
</ul>
</li>
<li>
<p><strong>（5）逗号运算符及其表达式（顺序求值表达式）</strong></p>
<ul>
<li>优先级：15级</li>
<li>功能：顺序求值</li>
<li>格式：表达式1，表达式2，。。。，表达式n</li>
<li>逗号表达式的值就是最后一个表达式的值，求值顺序从左到右依次求解</li>
</ul>
</li>
<li>
<p><strong>（6）强制类型转换运算符（显示转换）</strong></p>
<ul>
<li>(类型名) 表达式  或（类型名）（表达式）</li>
<li>利用强制类型转换运算符可将一个表达式的值转换为制定的类型</li>
<li>举例如下<ul>
<li>float x=123.456，y=0.5；</li>
<li>(int)x+y，结果为123.5</li>
<li>(int)(x+y)，结果为123</li>
</ul>
</li>
<li>强制转换的得到的是一个中间值，而原来表示或者变量的类型不发生改变。<ul>
<li>比如，int x；则(float)x结果是一个float类型，但是x还是int类型。</li>
</ul>
</li>
</ul>
</li>
<li>
<p>函数：调用具有一定功能的函数作为作运算量</p>
<ul>
<li>标准函数，#include<math.h> , sqrt(7), abs(-5)</li>
<li>自定义函数</li>
<li>原型声明 #include<math.h></li>
</ul>
</li>
</ol>
<hr>
<h5>隐式转换</h5>
<ul>
<li>占用内存大小</li>
<li>char（1字节）</li>
<li>long（4字节）</li>
<li>float（4字节）</li>
<li>unsigned（4字节）</li>
<li>int（4字节）</li>
<li>double（8字节）</li>
<li>向高字节的方向转换</li>
</ul>
<p>数据会影响后面的表达式的值</p>
<h3>求表达式的值的四部曲</h3>
<ul>
<li>判断合法性</li>
<li>挑选运算符</li>
<li>判断优先级</li>
<li>实际计算</li>
</ul>
<h3>变量值的改变</h3>
<ul>
<li>变量的自增、自减 （++、--）</li>
<li>赋值号左边的变量值</li>
</ul>
    </div><!-- /.entry-content -->

  </article>
</section>
        <section id="extras" class="body">
                <div class="blogroll">
                        <h2>blogroll</h2>
                        <ul>
                            <li><a href="http://getpelican.com/">Pelican</a></li>
                            <li><a href="http://python.org/">Python.org</a></li>
                            <li><a href="http://jinja.pocoo.org/">Jinja2</a></li>
                            <li><a href="#">You can modify those links in your config file</a></li>
                        </ul>
                </div><!-- /.blogroll -->
                <div class="social">
                        <h2>social</h2>
                        <ul>

                            <li><a href="#">You can add links in your config file</a></li>
                            <li><a href="#">Another social link</a></li>
                        </ul>
                </div><!-- /.social -->
        </section><!-- /#extras -->

        <footer id="contentinfo" class="body">
                <p>Powered by <a href="http://www.maxiaoan.com/">Maxiaoan</a></p>
        </footer><!-- /#contentinfo -->

</body>
</html>